package com.qianfeng.openapi.web.master.controller;

import com.qianfeng.openapi.web.master.bean.LayUITableVO;
import com.qianfeng.openapi.web.master.bean.LayUITreeVO;
import com.qianfeng.openapi.web.master.bean.ResultVO;
import com.qianfeng.openapi.common.enums.OpenApiEnums;
import com.qianfeng.openapi.web.master.service.RoleService;
import com.qianfeng.openapi.web.master.utils.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/sys/role")
@Slf4j
public class SysRoleController {

    @Autowired
    private RoleService roleService;

    /**
     * 展示角色信息
     * 请求路径和请求方式
     *
     * - [GET]() http://localhost/sys/role/table
     *
     * 请求参数
     *
     * - page = Integer（默认值为1）
     * - limit = Integer （默认值为5）
     * - name= String （非必传）
     */
    @GetMapping("/table")
    public LayUITableVO table(@RequestParam(defaultValue = "1")Integer page,
                              @RequestParam(defaultValue = "10")Integer limit,
                              String name){
        //1. 调用Service查询数据
        LayUITableVO result = roleService.findByNameAndPage(page,limit,name);

        //2. 响应数据
        return result;
    }


    /**
     * 查看角色的菜单信息
     * 请求路径和请求方式
     *
     * - [POST]() http://localhost/sys/role/role_menu
     *
     * 请求参数
     *
     * - roleId = Integer（必传项）
     */
    @PostMapping("/role_menu")
    public ResultVO roleMenu(Integer roleId){
        //1. 参数校验
        if(roleId == null){
            log.info("【查看角色的菜单信息】 请求参数不合法 roleId = {}", roleId);
            return R.error(OpenApiEnums.REQUEST_PARAMETER_ERROR.getStatus(),"角色的标识id为必传项,岂能为空!");
        }

        //2. 调用service查询菜单信息
        List<LayUITreeVO> data  = roleService.roleMenu(roleId);

        //3. 响应数据
        return R.ok(data);
    }


    /**
     * 给角色赋予菜单权限
     * 请求路径和请求方式
     *
     * - [POST]() http://localhost/sys/role/assign_menu
     *
     * 请求参数
     *
     * - roleId = Integer（必传项）
     * - menuId = Integer[]
     */
    @PostMapping("/assign_menu")
    public ResultVO assignMenu(Integer roleId,Integer[] menuId){
        //1. 校验参数
        if(roleId == null){
            log.info("【给角色赋予菜单权限】 请求参数不合法 roleId = {}", roleId);
            return R.error(OpenApiEnums.REQUEST_PARAMETER_ERROR.getStatus(),"角色的标识id为必传项,岂能为空!");
        }

        //2. 调用Service执行给角色赋予菜单权限
        roleService.assignMenu(roleId,menuId);

        //3. 响应数据
        return R.ok();
    }











}
